home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / attr / error_context.h < prev    next >
C/C++ Source or Header  |  2006-01-09  |  846b  |  37 lines

  1. #ifndef __ERROR_CONTEXT_T
  2. #define __ERROR_CONTEXT_T
  3.  
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7.  
  8. struct error_context {
  9.     /* Process an error message */
  10.     void (*error) (struct error_context *, const char *, ...);
  11.  
  12.     /* Quote a file name for including in an error message */
  13.     const char *(*quote) (struct error_context *, const char *);
  14.  
  15.     /* Free a quoted name */
  16.     void (*quote_free) (struct error_context *, const char *);
  17. };
  18.  
  19. #ifdef ERROR_CONTEXT_MACROS
  20. # define error(ctx, args...) do { \
  21.     if ((ctx) && (ctx)->error) \
  22.         (ctx)->error((ctx), args); \
  23.     } while(0)
  24. # define quote(ctx, name) \
  25.     ( ((ctx) && (ctx)->quote) ? (ctx)->quote((ctx), (name)) : (name) )
  26. # define quote_free(ctx, name) do { \
  27.     if ((ctx) && (ctx)->quote_free) \
  28.         (ctx)->quote_free((ctx), (name)); \
  29.     } while(0)
  30. #endif
  31.  
  32. #ifdef __cplusplus
  33. }
  34. #endif
  35.  
  36. #endif  /* __ERROR_CONTEXT_T */
  37.